package GUI;

import java.io.File;

import javax.swing.JTextArea;

import data.*;

/**
 * 
 * @author Benjamin GOUIT et David SOLO RABRIMANANA
 *
 */
public interface ToUser {
	
	/**
	 * Indication de la connexion de l'utilisateur local
	 */
	public abstract void Connected ();
	
	/**
	 * Mise a jour de la liste des utilisateurs
	 * @param username
	 */
	public abstract void MajListUser (String username);
	
	/**
	 * Affichage d'un nouvel utilisateur connecté
	 * @param username
	 */
	public abstract void PrintNewConnected (String username);
	
	/**
	 * Indication de la déconnexion d'un utilisateur
	 * @param username
	 */
	public abstract void UserDisconnected (String username);
	
	/**
	 * Affichage du texte reçu
	 * @param message
	 * @param username
	 * @param listMessToWrite
	 */
	public abstract void TextReceived (String message, String username, JTextArea listMessToWrite);
	
	/**
	 * Indication de l'envoi en cours d'un fichier
	 * @param username
	 * @param filename
	 */
	public abstract void FileIsSending (String username, String filename);
	
	/**
	 * Indication de l'attente de l'utilisateur distant pour la reception d'un fichier
	 * @param username
	 * @param filename
	 */
	public abstract void FileIsWaiting(String username, String filename);
	
	/**
	 * Indication du refus de l'utilisateur distant de recevoir un fichier
	 * @param username
	 * @param filename
	 */
	public abstract void FileRefused (String username, String filename);
	
	/**
	 * Indication de la fin de l'envoi d'un fichier
	 * @param username
	 * @param filename
	 */
	public abstract void FileSent (String username, String filename);
	
	/**
	 * Demande d'acceptation de recevoir un fichier de user
	 * @param user
	 * @param filename
	 * @param filesize
	 * @return
	 */
	public abstract boolean FileRequest (String user, String filename, long filesize);
	
	/**
	 * Choix de l'emplacement du fichier a recevoir
	 * @param filename
	 * @return
	 */
	public abstract File ChooseFilePath(String filename);
	
	/**
	 * Indication de la reception d'un fichier
	 * @param filename
	 * @param absolutePath
	 */
	public void fileReceived(String filename, String absolutePath);
}
